Trong Triton, đơn vị cơ bản của thao tác chuyển từ luồng scalar CUDA sang Phiên bản chương trình. Đây là một trừu tượng hóa của một khối luồng GPU, nơi một phiên bản duy nhất xử lý đồng thời một khối dữ liệu được vector hóa.
1. Đặc điểm nhận dạng của Phiên bản chương trình
Mỗi đơn vị thực thi lấy thông tin nhận dạng của mình thông qua pid = tl.program_id(trục=0). Hãy tưởng tượng một Xe nâng kho (phiên bản chương trình) nhấc lên một Thùng hàng (khối) gồm 128 thùng hàng, so với một công nhân đơn lẻ (luồng CUDA) nhấc từng thùng một.
2. Triton so với Tensor của PyTorch
Hiểu rõ khoảng cách ngữ nghĩa là điều then chốt cho việc quản lý bộ nhớ:
- Tensor PyTorch: Đối tượng Python ở phía máy chủ bao bọc lưu trữ VRAM, bước nhảy và thông tin mô tả.
- Tensor Triton: Một đối tượng cấp biên dịch biểu diễn các giá trị hoặc con trỏ nằm trong bộ nhớ đệm hay SRAM.
Đối tượng Python trỏ đến bộ nhớ toàn cục liên tục.
Một khối dữ liệu 2D/1D bên trong các thanh ghi biên dịch.
3. Bản chất SPMD
Triton tuân theo mô hình Chương trình Đơn, Dữ liệu Nhiều (SPMD) dòng chảy. Mỗi phiên bản chương trình đều thực thi giống hệt nhau mã nguồn. Sự phân kỳ chỉ xảy ra khi logic sử dụng pid để tính toán các offset bộ nhớ cụ thể.